package com.guomei.service.curse;

import com.guomei.bean.curse.UserCoupon;
import com.guomei.utils.Result;

import java.util.List;

/**
 * 用户优惠券服务接口
 */
public interface UserCouponService {
    /**
     * 根据ID查询用户优惠券
     */
    UserCoupon getById(Long id);

    /**
     * 根据用户ID和优惠券ID查询
     */
    UserCoupon getByUserIdAndCouponId(Long userId, Long couponId);

    /**
     * 根据用户ID查询优惠券列表
     */
    Result<?> getByUserId(UserCoupon userCoupon);

    /**
     * 根据订单号查询
     */
    UserCoupon getByOrderNo(String orderNo);

    /**
     * 用户领取优惠券
     */
    Result<?> receiveCoupon(Long userId, Long couponId);

    /**
     * 批量领取优惠券
     */
    boolean batchReceiveCoupons(List<UserCoupon> userCoupons);

    /**
     * 使用优惠券
     */
    boolean useCoupon(Long id, String orderNo);

    /**
     * 取消使用优惠券
     */
    boolean cancelUseCoupon(String orderNo);

    /**
     * 标记过期优惠券
     */
    void markExpiredCoupons();

    /**
     * 根据ID删除
     */
    boolean removeById(Long id);

    // UserCouponService.java 接口文件中应有以下方法声明
    boolean checkUserHasCoupon(Long userId, Long couponId);

    Result<?> checkCouponScope(Long teacherId);
}
